Subject: NetBIOS connection flows...

From: [email-masked] (Scott Adams)
Date: Wed, 21 Jul 93 10:56:33 EDT

I'm no NetBIOS expert, but what follows is what I understand to be the
dialog that takes place in order to establish a NetBIOS session (over
DLS).

The network looks like:

                  +----------+                  +----------+
                  |          |      Tunnel      |          |
                  |   DLSw   +==================+   DLSw   |
                  |          |                  |          |
                  +----+-----+                  +----+-----+
                       |                             |
                  LAN  |                         LAN |
                       |                             |
                  +----+-----+                  +----+-----+
                  | End Stn  |                  | End Stn  |
                  +----------+                  +----------+

The flow of traffic would be:

        End Stn           DLSw                  DLSw           End Stn
        -------           ----                  ----           -------
           | Name_Qry(F)   |    NETBIOS_NQ       |  Name_Qry(F)   |
Note 1.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Name_Rec      |    NETBIOS_NR       |  Name_Rec      |
           | <------------ | <------------------ | <------------- |
           |               |                     |                |
           | Name_Qry(C)   |    NETBIOS_NQ       |  Name_Qry(C)   |
Note 2.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Name_Rec(L)   |    NETBIOS_NR       |  Name_Rec(L)   |
Note 3.    | <------------ | <------------------ | <------------- |
           |               |                     |                |
           |  SABME        |    CONTACT          |  SABME         |
Note 4.    | ------------> | ------------------> | -------------> |
           |   UA          |       .             |   UA           |
           | <------------ |       .             | <------------- |
Note 5.    |  RR           |       .             |  RR            |
           | ------------> |       .             | -------------> |
           |   RNR         |       .             |   RR           |
           | <-----------  |     CONTACTED       | <------------- |
           |   RR          | <-----------------  |                |
           | <------------ |                     |                |
           |               |                     |                |
           | Sess_Init     |   I-Frame           |  Sess_Init     |
Note 6.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Sess_Conf     |    I-Frame          |  Sess_Conf     |
           | <------------ | <------------------ | <------------- |
           |               |                     |                |
           |               |                     |                |

Note 1.  This is a broadcast Name_Query intended to locate the
         destination end station's MAC addr.

Note 2.  This is a directed Name_Query Call packet that is intended to
         find out if the destination end station has a LISTEN
         outstanding for the source Name.

Note 3.  This Name_Recognized indicates that a LISTEN was outstanding,
         meaning it's ok to establish a session.

Note 4.  The SABME initiates the LLC Type 2 Connection for the NetBIOS
         session.

Note 5.  I have shown what I think connection establishment would look
         like using the immediate UA/RNR response indicated in the
         RFC.  Witholding the UA could also be applied here, allowing
         the RNR to be dispensed with.

Note 6.  The Session_Init packet begins the transmission of I frames
         over the new connection, and initiates the NetBIOS session.

I don't have enough experience with NetBIOS to know if there are
fairly common exceptions to this flow, and I haven't included anything
about what happens if something goes wrong.  If there are exceptions
to this, someone please let us know...

Scott